agera

https://github.com/google/agera

함수형 프로그래밍 혹은 reactive 프로그래밍에 대한 관심들은 점점 커져가고 요즘은 어떤 작업을 하더라도 reactive programming이 주는 장점들을 많은 부분들에서 가져가려고 애쓰는 것 같습니다.

agera는 구글 play 개발팀이 자신들이 좀 더 android개발을 편하게 하기 위해 내부적인 프로젝트를 진행하다 만든 것을 오픈 소스화한 androdi용 reactive 프로그래밍 프레임워크 입니다.

2016/04/21 Today’s Best ( 1131 ★)

google/agera
_agera - Reactive Programming for Android_github.com

그냥 간단하게는 HTTP Request에 대해서 값을 받는 형식을 쉽게 하려고 시작한 것이 아닌가 생각되며 위키 첫 페이지에도 그 샘플을 설명하고 있습니다.

이 프로젝트를 보며 RxJava 와 다른 점이 무엇일까 생각한 것은 저 뿐만이 아닌 거 같습니다. 깃헙 첫번째 이슈도 그것에 대한 질문이며 개발자들의 대답은 그냥 심플한 라이브러리를 만들었다 정도 인거 같습니다.

Question: what’s the relation to RxJava? * Issue #20 * google/agera
_This looks like a very interesting proposition. My question - it’s quite an elephant in the room, I should think - is…_github.com

React의 여러가지 아키텍처를 따라 한거 같다는 평도 듣고 있네요.


Reactive Programming 이란

In computing, reactive programming is a programming paradigm oriented around data flows and the propagation of change. This means that it should be possible to express static or dynamic data flows with ease in the programming languages used, and that the underlying execution model will automatically propagate changes through the data flow. — wikipedia

손쉽게 얘기하자면 비동기 데이타의 흐름에 따른 프로그래밍을 하는 것을 이야기 합니다. 조금 더 철학 적으로 가자면 설명할 것들이 많겠지만 트렌드에 대한 이야기만 하자면 Javascript 콜백을 처리하는 형태 처럼 데이타의 흐름에 대해서 코드를 쭉 써내려 가는 패턴 혹은 아키텍처라고 보면 될 것 같습니다.

Javascript 아니 Node가 개발 커뮤니티에 던진 충격들과 그 시간적인 흐름 혹은 이슈가 되는 타이밍은 비슷하게 나왔고 유명한 프레임워크로는 Rx시리즈가 있습니다.

ReactiveX
_Edit description_reactivex.io

하지만 사람들이 가장 많이 사용한다 혹은 임팩트 있게 사용하는 툴로는 Angular 혹은 React 가 있습니다. ( 이 프레임워크가 Reactive 를 표방하고 나온 것은 아닙니다!)


그러면 이런 프레임워크들이 없다면 어떻게 콜백 처리 혹은 데이타 흐름을 처리할까요?

보통은 AsyncCallback 인터페이스를 만들고 AsyncTask를 이용해서 처리합니다. 자세한 내용은 다음의 블로그에서 잘 설명해 주고 있습니다.

유지보수를 고려한 안드로이드 비동기 처리 기반 코드 만들기
_안드로이드에서 비동기로 작업을 할 때 사용되는 AsyncTask는 잘 사용하지 않으면, 코드 유지보수를 어렵게 만드는 악의 원천이 될 수 있다. 특히, 많은 안드로이드 입문서들이 AsyncTask를 이용해서 비동…_javacan.tistory.com

최근의 개발 트렌드를 고려해서 android를 좀 더 엣지있게 짜고 싶은 개발자라면 참고하면 좋을 듯 합니다.

By Keen Dev on April 20, 2016.

Exported from Medium on May 31, 2017.